home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 2002 November / SGI Freeware 2002 November - Disc 2.iso / dist / fw_glimpse.idb / usr / freeware / src / glimpse-3.0 / libtemplate / include / url.h.z / url.h
C/C++ Source or Header  |  1997-09-09  |  5KB  |  161 lines

  1. /*
  2.  *  url.h - URL Processing (parsing & retrieval)
  3.  *
  4.  *  Darren Hardy, hardy@cs.colorado.edu, April 1994
  5.  *
  6.  *  $Id: url.h,v 1.13 1995/01/17 21:41:48 hardy Exp $
  7.  *
  8.  *  ----------------------------------------------------------------------
  9.  *  Copyright (c) 1994, 1995.  All rights reserved.
  10.  *  
  11.  *          Mic Bowman of Transarc Corporation.
  12.  *          Peter Danzig of the University of Southern California.
  13.  *          Darren R. Hardy of the University of Colorado at Boulder.
  14.  *          Udi Manber of the University of Arizona.
  15.  *          Michael F. Schwartz of the University of Colorado at Boulder. 
  16.  *  
  17.  *  This copyright notice applies to all code in Harvest other than
  18.  *  subsystems developed elsewhere, which contain other copyright notices
  19.  *  in their source text.
  20.  *  
  21.  *  The Harvest software was developed by the Internet Research Task
  22.  *  Force Research Group on Resource Discovery (IRTF-RD).  The Harvest
  23.  *  software may be used for academic, research, government, and internal
  24.  *  business purposes without charge.  If you wish to sell or distribute
  25.  *  the Harvest software to commercial clients or partners, you must
  26.  *  license the software.  See
  27.  *  http://harvest.cs.colorado.edu/harvest/copyright,licensing.html#licensing.
  28.  *  
  29.  *  The Harvest software is provided ``as is'', without express or
  30.  *  implied warranty, and with no support nor obligation to assist in its
  31.  *  use, correction, modification or enhancement.  We assume no liability
  32.  *  with respect to the infringement of copyrights, trade secrets, or any
  33.  *  patents, and are not responsible for consequential damages.  Proper
  34.  *  use of the Harvest software is entirely the responsibility of the user.
  35.  *  
  36.  *  For those who are using Harvest for non-commercial purposes, you may
  37.  *  make derivative works, subject to the following constraints:
  38.  *  
  39.  *  - You must include the above copyright notice and these accompanying 
  40.  *    paragraphs in all forms of derivative works, and any documentation 
  41.  *    and other materials related to such distribution and use acknowledge 
  42.  *    that the software was developed at the above institutions.
  43.  *  
  44.  *  - You must notify IRTF-RD regarding your distribution of the 
  45.  *    derivative work.
  46.  *  
  47.  *  - You must clearly notify users that your are distributing a modified 
  48.  *    version and not the original Harvest software.
  49.  *  
  50.  *  - Any derivative product is also subject to the restrictions of the 
  51.  *    copyright, including distribution and use limitations.
  52.  */
  53. #ifndef _URL_H_
  54. #define _URL_H_
  55.  
  56. #include "config.h"
  57. #include <time.h>
  58.  
  59. /*
  60.  *  The supported URLs look like:
  61.  *
  62.  *      file://host/pathname
  63.  *      gopher://host[:port][/TypeDigitGopherRequest]
  64.  *      http://host[:port][/[pathname][#name][?search]]
  65.  *      ftp://[user[:password]@]host[:port][/pathname]
  66.  *
  67.  *  where host is either a fully qualified hostname, an IP number, or
  68.  *  a relative hostname.  
  69.  *
  70.  *  For http, any '#name' or '?search' directives are ignored.
  71.  *  For ftp, any user, password, or port directives are unsupported.
  72.  */
  73.  
  74. struct url {
  75.     char *url;        /* Complete, normalized URL */
  76.     int type;        /* file, ftp, http, gopher, etc. */
  77.     char *raw_pathname;    /* pathname portion of the URL, w/ escapes */
  78.     char *pathname;        /* pathname portion of the URL, w/o escapes */
  79.     char *host;        /* fully qualified hostname */
  80.     int port;        /* TCP/IP port */
  81.  
  82.  
  83. /* Information for FTP processing */
  84.     char *user;        /* Login name for ftp */
  85.     char *password;        /* password for ftp */
  86.  
  87. /* Information for Gopher processing */
  88.     int gophertype;        /* Numeric type for gopher request */
  89.  
  90. /* Information for HTTP processing */
  91.     char *http_version;    /* HTTP/1.0 Version */
  92.     int   http_status_code;    /* HTTP/1.0 Status Code */
  93.     char *http_reason_line;    /* HTTP/1.0 Reason Line */
  94.     char *http_mime_hdr;    /* HTTP/1.0 MIME Response Header */
  95.  
  96. /* Information for local copy processing */
  97.     char *filename;        /* local filename */
  98.     FILE *fp;        /* ptr to local filename */
  99.     time_t lmt;        /* Last-Modification-Time */
  100.  
  101. #ifdef USE_MD5
  102.     char *md5;        /* MD5 value of URL */
  103. #endif
  104. };
  105. typedef struct url URL;
  106.  
  107. enum url_types {        /* Constants for URL types */ 
  108.     URL_UNKNOWN,
  109.     URL_FILE,
  110.     URL_FTP,
  111.     URL_GOPHER,
  112.     URL_HTTP,
  113.     URL_NEWS,
  114.     URL_NOP,
  115.     URL_TELNET,
  116.     URL_WAIS
  117. };
  118.  
  119. #ifndef _PARAMS
  120. #if defined(__STDC__) || defined(__cplusplus) || defined(__STRICT_ANSI__)
  121. #define _PARAMS(ARGS) ARGS
  122. #else /* Traditional C */     
  123. #define _PARAMS(ARGS) ()      
  124. #endif /* __STDC__ */              
  125. #endif /* _PARAMS */   
  126.  
  127. URL *url_open _PARAMS((char *));
  128. int url_read _PARAMS((char *, int, int, URL *));
  129. int url_retrieve _PARAMS((URL *));
  130. void url_close _PARAMS((URL *));
  131.  
  132. void init_url _PARAMS(());
  133. void finish_url _PARAMS(());
  134.  
  135. void url_purge _PARAMS(());
  136.  
  137. URL *dup_url _PARAMS((URL *));
  138. void print_url _PARAMS((URL *));
  139.  
  140. int http_get _PARAMS((URL *));
  141. int ftp_get _PARAMS((URL *));
  142. int gopher_get _PARAMS((URL *));
  143.  
  144.  
  145. #ifdef USE_LOCAL_CACHE
  146. void init_cache _PARAMS(());
  147. char *lookup_cache _PARAMS((char *));
  148. time_t lmt_cache _PARAMS((char *));
  149. void add_cache _PARAMS((char *, char *));
  150. void finish_cache _PARAMS(());
  151. void expire_cache _PARAMS(());
  152. #endif 
  153.  
  154. #ifdef USE_CCACHE
  155. void url_initCache _PARAMS((int, long));
  156. void url_shutdowncache _PARAMS(());
  157. #endif
  158.  
  159. #endif /* _URL_H_ */
  160.  
  161.